package models

import (
	"time"
	"user-srv/basic/inits"
)

type InAppChat struct {
	Id       uint32    `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	UserId   uint32    `gorm:"column:user_id;type:int UNSIGNED;comment:用户id;not null;" json:"user_id"`                          // 用户id
	ToUserId uint32    `gorm:"column:to_user_id;type:int UNSIGNED;comment:发送的用户;not null;" json:"to_user_id"`                   // 发送的用户
	Title    string    `gorm:"column:title;type:varchar(50);comment:标题;not null;" json:"title"`                                 // 标题
	Content  string    `gorm:"column:content;type:text;comment:发送内容;not null;" json:"content"`                                  // 发送内容
	Types    uint8     `gorm:"column:types;type:tinyint UNSIGNED;comment:类型  1 - 公告 2 - 个人信息 ;not null;" json:"types"`          // 类型  1 - 公告 2 - 个人信息
	IsRead   uint8     `gorm:"column:is_read;type:tinyint UNSIGNED;comment:是否已读 1-未读  2-已读;not null;default:1;" json:"is_read"` // 是否已读 1-未读  2-已读
	CreateAt time.Time `gorm:"column:create_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"create_at"`
	UpdateAt time.Time `gorm:"column:update_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"update_at"`
	DeleteAt time.Time `gorm:"column:delete_at;type:datetime;default:NULL;" json:"delete_at"`
}

func (i *InAppChat) TableName() string {
	return "in_app_chat"
}

// 添加信息
func (i *InAppChat) CreateInAppMessage() error {
	return inits.DB.Create(&i).Error
}

// 信息列表 ———— 个人信息与公告
func (i *InAppChat) GetInfoList() (list []InAppChat, err error) {
	err = inits.DB.Where("to_user_id = ? or  types = 1", i.ToUserId).Order("create_at desc").Find(&list).Error
	return
}

// 修改站内信
func (i *InAppChat) UpdateInfo() error {
	return inits.DB.Updates(&i).Error
}

// 信息详情
func (i *InAppChat) InfoDetail() error {
	return inits.DB.Where("id = ?", i.Id).Find(&i).Error
}
